import { LabelHTMLAttributes } from 'react';
import { ISelectTextfieldTextareaProps } from '@components/common/SelectTextfieldTextareaTypes';
import { CSSObject } from 'styled-components';

/**
 * Свойства для компонента поля (Field), объединяющие общие свойства HTML-метки
 * с дополнительными свойствами 'label' и 'labelStyle' из компонента Textfield.
 * @typedef {LabelHTMLAttributes<HTMLLabelElement> & Pick<IProps, 'label' | 'labelStyle'>} TField
 */
export type TField =
    & LabelHTMLAttributes<HTMLLabelElement>
    & Omit<ISelectTextfieldTextareaProps, 'focusedStyle'>
    & { label?: string; labelStyle?: CSSObject; displayInline?: boolean; };

/**
 * Свойства для стилизованного компонента поля (StyledField), полученные из IField за исключением свойства 'children'.
 * @typedef {Omit<TField, 'children'>} IStyledField
 */
export type TStyledField = Omit<TField, 'children'>;
